package tok

// TokenType represents the type of a token
type TokenType string

const (
	// Special tokens
	ILLEGAL TokenType = "ILLEGAL"
	EOF     TokenType = "EOF"

	// Literals
	STRING   TokenType = "STRING"     // string literals
	SYMBOL   TokenType = "SYMBOL"      // identifiers and symbols
	INT      TokenType = "INT"        // integer literals
	RATIONAL TokenType = "RATIONAL"   // rational number literals
	REAL     TokenType = "REAL"       // real (floating-point) literals
	BOOLEAN  TokenType = "BOOLEAN"    // boolean literals
	CHAR     TokenType = "CHAR"       // character literals

	QUOTE TokenType = "QUOTE" // '

	// Delimiters
	LPAREN TokenType = "LPAREN" // (
	RPAREN TokenType = "RPAREN" // )
)

// Token represents a lexical token
type Token struct {
	Type   TokenType
	Lexeme string
	Line   int
	Column int
}
